<?php

namespace App\Services\Bank;

interface BankClientInterface
{
    /**
     * 构建请求报文
     *
     * @param string $tradeCode 交易码
     * @param array $mapData Map数据
     * @param array $loopData Loop数据
     * @return string
     */
    public function buildRequestMessage(string $tradeCode, array $mapData = [], array $loopData = []): string;

    /**
     * 解析响应报文
     *
     * @param string $response 响应内容
     * @return array
     */
    public function parseResponseMessage(string $response): array;

    /**
     * 发送请求
     *
     * @param string $message 请求报文
     * @return array
     */
    public function sendRequest(string $message): array;

    /**
     * 通用API调用方法
     *
     * @param string $operation 操作类型
     * @param array $mapData Map数据
     * @param array $loopData Loop数据
     * @return array
     */
    public function callApi(string $operation, array $mapData = [], array $loopData = []): array;
}